講完了網路的基礎知識之後,各位應該記憶都回來了,那接著要先講常常用到,但沒什麼存在感的DNS。
為什麼要先講它呢?這是因為在Kubernetes中,所有的容器之間相互通訊基本上都是透過 domain name,但是網路封包必須透過IP才能進行通訊,因此便需要 DNS 來進行轉換。因此了解 DNS 對之後的 Kubernetes 網路是有相當的幫助的。
那講道 DNS ,首先需要來介紹什麼是 Domain name ,也就是所謂的域名。
通常域名的結構如 google.com
這樣(://
的後面直到下一個/
中間,最前面的是通訊協議),
而我們向 DNS 詢問 google.com
的 IP 時, DNS 會先對域名進行解析,
而域名的解析需要從最後面開始,並以 .
進行分隔,
因此 google.com
第一個被解析的是 com
的部分,這部分也被稱為頂級域名(Top-level Domain, TLD),是由ICANN(網際網路名稱與數位位址分配機構)分配給不同國家或機構進行使用。
這時 DNS 就會向 root DNS Server 詢問 com
Server 的 IP(嚴格來說,域名最後面應該有個點,像這樣 google.com.
,但通常最後面的點會被省略)
接著 DNS 會再向負責 com
的 DNS Server 詢問 google.com
Server 的 IP
這樣我們的 DNS 就得到了 google.com
Server 的 IP 了,我們的 DNS Server 就會像我們回復 google.com
Server 的 IP。
話說我曾經問過我學長一個頗白癡的問題,大概過程如下:
我:以上流程都是都是找負責對應 domain 的 DNS Server ,那它們是怎麼互相尋找的,如:各個 DNS 是怎麼找到 root DNS Server 的?還有我們是怎麼找到 DNS 讓它出去詢問的?
學長:就哈扣寫死,像我們都會設 8.8.8.8 ,就是這樣,這沒辦法(兩手一攤)。
恩~~,果然又是哈扣
那今天就到這裡,明天在接著介紹其他網路相關的東西。